import Vue from 'vue'
import GlobalDialog from './GlobalDialog.vue'

// 创建构造函数
const DialogConstructor = Vue.extend(GlobalDialog)

// 实例缓存
let instance

// 定义对话框插件
const DialogPlugin = {
  install(Vue) {
    // 添加全局方法
    Vue.prototype.$dialog = {
      // 打开确认对话框
      confirm(options) {
        return createInstance().open({
          title: 'AI机器人',
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          ...options,
        })
      },

      // 打开提示对话框
      alert(options) {
        return createInstance().open({
          title: '提示',
          showCancelButton: false,
          confirmButtonText: '知道了',
          confirmButtonType: 'info',
          ...options,
        })
      },

      // 打开警告对话框
      warning(options) {
        return createInstance().open({
          title: '警告',
          confirmButtonType: 'warning',
          ...options,
        })
      },

      // 打开错误对话框
      error(options) {
        return createInstance().open({
          title: '错误',
          confirmButtonType: 'danger',
          ...options,
        })
      },

      // 自定义对话框
      open(options) {
        return createInstance().open(options)
      },

      // 关闭对话框
      closeDailog(options) {
        return destroyInstance(options)
      },
    }
  },
}

// 创建实例
function createInstance() {
  if (!instance) {
    instance = new DialogConstructor({
      el: document.createElement('div'),
    })
    document.body.appendChild(instance.$el)
  }
  return instance
}

// 销毁实例
function destroyInstance() {
  instance.$off() // 移除事件监听器（如果需要）
  if (instance.$el && instance.$el.parentNode) {
    instance.$el.parentNode.removeChild(instance.$el) // 从DOM中移除元素
  }
  instance.$destroy()
  instance = null
  return instance
}

// 自动安装插件
if (typeof window !== 'undefined' && window.Vue) {
  window.Vue.use(DialogPlugin)
}

export default DialogPlugin
